library(epicalc)
library(nortest)
library(multcomp)
library(multcompView)
library(Rcmdr)

EXP <- read.csv("INGESTION.STAT.csv",header=TRUE, sep=",")

#Lendo o arquivo .csv originado pela primeira funo ();

#   EXP: GONY1, GONY2, GONY3 (Experimentos com Gonyaulax sp.);
#   GYM1, GYM2, GYM3 (Experimentos com Gymnodinium sp.);
#   ISO1, ISO2, ISO3 (Experimentos com Isochrysis galbana);
#   FRA1, FRA2, FRA3 (Experimentos com Alexandrium cf. fraterculus);
#   TAM1, TAM2, TAM3 (Experimentos com Alexandrium tamiyawanichii);
#   RHO1, RHO2, RHO3 (Experimentos com Rhodomonas cf. salina);
#   MIXA1, MIXA2, MIXA3 (Experimentos de misturaA: PRO/TAM);
#   MIXB1, MIXB2, MIXB3 (Experimentos de misturaB: FRA/PRO/TAM).

#############################################################################################################################################################################
#FUNO STAT#################################################################################################################################################################

EXP #Conferindo;
TAT <- EXP$C #Transforamndo a primeira coluna do arquivo .txt em um objeto numrico (tratamentos);
TAT.F <- factor(EXP$C) #Transformando a primeira coluna do arquivo .txt em um fator (tratamentos);
IR <- EXP$IR #Atribuindo um nome  segunda coluna do .txt (Ingestion Rate - IR);

TAT.F
IR

#1EXPLORANDO OS DADOS GRAFICAMENTE:

X11()
par(mfrow = c(1,2))
plot(TAT,IR) #Disperso (ateno para TAT na forma numrica);
dotplot(IR, by = TAT.F, main = "", ylab = "TAT") #Posio dos pontos;

#2EXECUTANDO UMA REGRESSO ENTRE OS DADOS
REG <- aov(IR ~ TAT.F) #Executa uma regresso linear entre TAT e IR - comando similar ao
                       #comando "lm" porm adequado para a realizao da ANOVA;
                       #Atribuio do resultado do "aov" ao um objeto ("reg");
REG #Conferindo;

#2EXPLORANDO A REGRESSO ENTRE OS DADOS GRAFICAMENTE:

#Anlise exploratria da regresso: criao de um conjunto de dados diagnsticos para observar o comportamento dos resduos;
RES <- rstandard(REG) #Atribuindo os resduos padronizados de REG a um objeto (RES);
FV <- fitted.values(REG) #Atribuindo os valores ajustados de REG a um objeto (FV);
TAT.ORD <- seq(1:15) #Criao de um vetor para ordenar os tratamentos;
TAT.ORD #Conferindo;
summary(RES)
sd(RES)
X11()
par(mfrow = c(3,2))
dotplot(RES, main = "", ylab = "Frequncia") #Indicao de independncia: resduos distribudos em torno do valor "0";
boxplot(RES, main = "", ylab = "Resduos")   #Distribuio dos resduos;
plot(TAT.ORD, RES, main = "", xlab = "Ordem", ylab = "Resduos") #Indicao de independncia: resduos distribudos em torno do valor "0";
abline(h = 0)
plot(FV, RES, main = "", xlab = "Valores Ajustados", ylab = "Resduos") #Indicao de independncia: distribuio dos resduos dentro de uma mesma faixa (largura);
abline(h = 0)
qqnorm(RES, xlab = "Quantis Tericos", ylab = "Quantis Amostrais") #Indicao de normalidade: resduos semelhantes aos valores ajustados;
qqline(RES, xlab = "Quantis Tericos", ylab = "Quantis Amostrais")

#3VERIFICAO DOS PRESSUPOSTOS DA ANOVA:

AD <- ad.test(RES) #Teste para verificao da normalidade dos dados;
BARTLETT <- bartlett.test(RES,TAT) #Teste para verificao da homocedasticidade;

AD #Conferindo;
BARTLETT #Conferindo

#4SE OS PRESSUPOSTOS SO VERDADEIROS, EXECUO E INTERPRETAO DA ANOVA:

if(AD$p.value & BARTLETT$p.value >= 0.05){
  
  ANOVA <- anova(REG) #Excutando uma anlise de varincia de REG;
                      if(ANOVA$p.value >= 0.05){#Caso a ANOVA indique diferencas (Hiptese nula falsa): aplicao da correo de Tukey;
                                                #Aplicao da correo de Tukey e atribuio do resultado do teste a um obejto ("THSD");
                         THSD <- TukeyHSD(REG) 
                         X11()
                         par(mfrow = c(1,2))
                         plot(THSD) #Verificao da diferena;
                         d <- data.frame(resp = IR, TAT = TAT)
                         MULTICOMPBOXPLOT<- multcompBoxplot(resp ~ TAT, data = d, compFn = "TukeyHSD") #Verificao grfica mais rpida da localizao da diferena (Pacote:)
                         
                         tiff("MULTICOMPBOXPLOT") #Sada1: Grfico para verificao das diferenas;
                         RESULT <- data.frame(THSD$p.value)
                         RESULT #Conferindo;
                         #Sada1: THSD para descrio das diferenas;
                      }

                      else{
                         RESULT <- data.frame(ANOVA$p.value)
                         RESULT #Conferindo;
                         #Sada2: ANOVA (sem diferena);
                      }

}

#5SE OS PRESSUPOSTOS NO SO VERDADEIROS, EXECUO DO TESTE DE KRUSKAL-WALLIS:

KRUSKAL <- kruskal.test(IR, TAT.F)
KRUSKAL$p.value #Conferindo o valor de p;
#Validao do Teste de Kruskal-Wallis;
LEVENE <- leveneTest(IR,TAT.F) #Verirficao da homocedasticidade (teste menos robusto por  executado
                               #com base nas mediandas).
LEVENE$Pr #Conferindo o valor de p;
RESULT <- data.frame(KRUSKAL$p.value,LEVENE$Pr)
RESULT #Conferindo;


write.table(RESULT, "RESULT.csv", sep="\t") #Sada3: KRUSKALL para descrio das diferenas.

#############################################################################################################################################################################
#############################################################################################################################################################################  


